<!--
  ~ ============LICENSE_START=======================================================
  ~  Copyright (C) 2021 Nordix Foundation
  ~  ================================================================================
  ~  Licensed under the Apache License, Version 2.0 (the "License");
  ~  you may not use this file except in compliance with the License.
  ~  You may obtain a copy of the License at
  ~
  ~        http://www.apache.org/licenses/LICENSE-2.0
  ~  Unless required by applicable law or agreed to in writing, software
  ~  distributed under the License is distributed on an "AS IS" BASIS,
  ~  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~  See the License for the specific language governing permissions and
  ~  limitations under the License.
  ~
  ~  SPDX-License-Identifier: Apache-2.0
  ~  ============LICENSE_END=========================================================
  -->

<div class="tosca-function">
  <div class="w-sdc-form" [formGroup]="formGroup">
    <div class="i-sdc-form-item">
      <label class="i-sdc-form-label">{{'TOSCA_FUNCTION_LABEL' | translate}}</label>
      <select formControlName="toscaFunctionType" (change)="onFunctionTypeChange()">
        <optgroup label="Standard">
          <option *ngFor="let toscaFunction of toscaFunctions"
                [ngValue]="toscaFunction">{{toscaFunction | lowercase}}</option>
        </optgroup>
        <optgroup *ngIf="toscaCustomFunctions" label="Custom">
          <option *ngFor="let toscaCustomFunction of toscaCustomFunctions"
                [ngValue]="toscaCustomFunction">{{toscaCustomFunction | lowercase}}</option>
        </optgroup>
        <option value="YAML">yaml</option>
      </select>
    </div>
    <div *ngIf="isConcatSelected()">
      <app-tosca-concat-function [toscaConcatFunction]="toscaFunction" [customToscaFunctions]="customToscaFunctions" [componentInstanceMap]="componentInstanceMap"
                                 (onValidityChange)="onConcatFunctionValidityChange($event)"></app-tosca-concat-function>
    </div>
    <div *ngIf="isCustomSelected()">
      <app-tosca-custom-function [toscaCustomFunction]="toscaFunction"
                                 [customToscaFunctions]="customToscaFunctions"
                                 [name]="getCustomFunctionName()"
                                 [type]="getCustomFunctionType()"
                                 [propertyType]="property.type"
                                 [propertySchemaType]="property.schemaType"
                                 [componentInstanceMap]="componentInstanceMap"
                                 [overridingType]="overridingType"
                                 [isDefaultCustomFunction]="isDefaultCustomFunction()"
                                 (onValidityChange)="onCustomFunctionValidityChange($event)">
      </app-tosca-custom-function>
    </div>
    <div *ngIf="isGetFunctionSelected()">
      <app-tosca-get-function [property]="property" [toscaGetFunction]="toscaFunction"
                              [overridingType] = "overridingType"
                              [componentInstanceMap]="componentInstanceMap"
                              [functionType]="toscaFunctionTypeForm.value"
                              [compositionMap]="compositionMap"
                              [compositionMapKey]="compositionMapKey"
                              (onValidityChange)="onGetFunctionValidityChange($event)">
      </app-tosca-get-function>
    </div>
    <div *ngIf="isYamlFunctionSelected()">
      <app-yaml-function [yamlFunction]="toscaFunction" (onValidityChange)="onYamlFunctionValidityChange($event)"></app-yaml-function>
    </div>
    <div *ngIf="showClearButton()" class="button-container">
      <button (click)="onClearValues()" class="tlv-btn red ng-star-inserted">{{'TOSCA_FUNCTION_CLEAR_VALUE_BUTTON' | translate}}</button>
    </div>
  </div>
  <loader [display]="isLoading" [size]="'medium'" [relative]="true"></loader>
</div>
